// vue.config.js
const path = require('path');
// const UglifyPlugin = require("uglifyjs-webpack-plugin");

function resolve(dir) {
  return path.join(__dirname, dir);
}
module.exports = {
  // 部署应用包时的基本 URL
  publicPath: '/',
  // 生产环境构建文件的目录
  // outputDir: './../ucc_h5',
  devServer: {
    // 代理 配置文档：https://webpack.docschina.org/configuration/dev-server/
    port: 7236, // 端口号
    // host:"localhost", //主机名 127.0.0.1 真机0.0.0.0
    https: false, // 协议
    open: true, // 启动服务时自动打开浏览器
    // overlay: {
    //   warnings: false,
    //   errors: true
    // },
    compress: true, // 一切服务都启用 gzip 压缩
  },
  // lintOnSave: process.env.NODE_ENV === 'development', //关闭格式检查
  lintOnSave: false, // 关闭格式检查
  productionSourceMap: process.env.NODE_ENV === 'development', // 打包不生成.map 文件 加快打包速度 和包大小
  css: {
    loaderOptions: {
      sass: {
        // 全局导入预处理器
        prependData: '@import "~@/styles/index.scss";', // sass less 以這種方式导入 less需要以;分号结尾
        // import: path.resolve(__dirname, './src/assets/css/style.styl')//stylus以这种方式导入
      },
    },
  },
  configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: '模板',
    resolve: {
      alias: {
        '@': resolve('src'),
      },
    },
    optimization: {
      runtimeChunk: 'single',
      splitChunks: {
        // 优化打包chunk-vendors.js文件体积过大
        chunks: 'all',
        maxInitialRequests: Infinity,
        minSize: 20000, // 依赖包超过20000bit将被单独打包
        cacheGroups: {
          vendor: {
            test: /[\\/]node_modules[\\/]/,
            name(module) {
              // get the name. E.g. node_modules/packageName/not/this/part.js
              // or node_modules/packageName
              const packageName = module.context.match(
                /[\\/]node_modules[\\/](.*?)([\\/]|$)/,
              )[1];
              // npm package names are URL-safe, but some servers don't like @ symbols

              return `npm.${packageName.replace('@', '')}`;
            },
          },
        },
      },
      // minimizer: [
      //   new UglifyPlugin({
      //     //打包时去除打印信息（console）
      //     uglifyOptions: {
      //       compress: {
      //         warnings: false,
      //         drop_console: true, // console
      //         drop_debugger: false,
      //         pure_funcs: ["console.log"] // 移除console
      //       }
      //     }
      //   })
      // ]
    },
  },
  // 使打包出来的index.html中引入文件路径都带上引号 官方默认标准设置是去除所有html中的注释、回车换行、引号等等
  chainWebpack: (config) => {
    // config.module
    //   .rule("vue")
    //   .use("vue-loader")
    //   .loader("vue-loader")
    //   .tap(options => {
    //     options.compilerOptions.directives = {
    //       html(node, directiveMeta) {
    //         (node.props || (node.props = [])).push({
    //           name: "innerHTML",
    //           value: `xss(_s(${directiveMeta.value}))`
    //         });
    //       }
    //     };
    //     return options;
    //   });
    // 移除 prefetch 插件（解决首次进入页面所有资源预加载）
    config.plugins.delete('prefetch');
    //     config.plugin("html").tap(args => {
    //         args[0].minify = false;
    //         return args;
    //     });
  },
};
